home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2001 May / SGI IRIX Base Documentation 2001 May.iso / usr / share / catman / p_man / cat3 / Vk / VkDialogManager.z / VkDialogManager
Encoding:
Text File  |  2001-04-17  |  59.1 KB  |  1,387 lines

  1.  
  2.  
  3.  
  4. VVVVkkkkDDDDiiiiaaaallllooooggggMMMMaaaannnnaaaaggggeeeerrrr((((3333xxxx))))                                        VVVVkkkkDDDDiiiiaaaallllooooggggMMMMaaaannnnaaaaggggeeeerrrr((((3333xxxx))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      VkDialogManager - An abstract manager class that caches and supports
  10.      Motif dialogs
  11.  
  12. IIIINNNNHHHHEEEERRRRIIIITTTTSSSS FFFFRRRROOOOMMMM
  13.      VkComponent : VkCallbackObject
  14.  
  15. HHHHEEEEAAAADDDDEEEERRRR FFFFIIIILLLLEEEE
  16.      #include <Vk/VkDialogManager.h>
  17.  
  18. PPPPUUUUBBBBLLLLIIIICCCC PPPPRRRROOOOTTTTOOOOCCCCOOOOLLLL SSSSUUUUMMMMMMMMAAAARRRRYYYY
  19.    DDDDeeeessssttttrrrruuuuccccttttoooorrrr
  20.            virtual void ~VkDialogManager(void);
  21.  
  22.  
  23.    SSSSeeeettttttttiiiinnnngggg LLLLaaaabbbbeeeellllssss aaaannnndddd TTTTiiiittttlllleeeessss
  24.            void setTitle(const char* nextTitle);
  25.            void setButtonLabels(const char* okLabel,
  26.                                 const char* cancelLabel,
  27.                                 const char* applyLable);
  28.  
  29.  
  30.    UUUUnnnnppppoooossssttttiiiinnnngggg DDDDiiiiaaaallllooooggggssss
  31.            void unpost(void);
  32.            void unpost(Widget dialogWidget);
  33.            void unpostAll(void);
  34.  
  35.  
  36.    CCCChhhhaaaannnnggggiiiinnnngggg DDDDiiiiaaaalllloooogggg bbbbeeeehhhhaaaavvvviiiioooorrrr
  37.            void centerOnScreen(Boolean center);
  38.            void enableCancelButton (Boolean b);
  39.  
  40.  
  41.    AAAAcccccccceeeessssssss ffffuuuunnnnccccttttiiiioooonnnnssss
  42.            Widget lastPosted(void);
  43.  
  44.  
  45.    AAAAcccccccceeeessssssss ffffuuuunnnnccccttttiiiioooonnnnssss ---- VVVViiiieeeewwwwKKKKiiiitttt 2222....1111 oooonnnnllllyyyy
  46.            VkScreen getScreen();
  47.  
  48.  
  49.    PPPPoooossssttttiiiinnnngggg NNNNoooonnnn----MMMMooooddddaaaallll DDDDiiiiaaaallllooooggggssss
  50.            virtual Widget post (
  51.                     const char      *message    = NULL,
  52.                     XtCallbackProc   okCB       = NULL,
  53.                     XtCallbackProc   cancelCB   = NULL,
  54.                     XtCallbackProc   applyCB    = NULL,
  55.                     XtPointer        clientData = NULL,
  56.                     const char      *helpString = NULL,
  57.                     VkSimpleWindow  *parent     = NULL,
  58.                     Widget          widgetParent = NULL);
  59.  
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. VVVVkkkkDDDDiiiiaaaallllooooggggMMMMaaaannnnaaaaggggeeeerrrr((((3333xxxx))))                                        VVVVkkkkDDDDiiiiaaaallllooooggggMMMMaaaannnnaaaaggggeeeerrrr((((3333xxxx))))
  71.  
  72.  
  73.  
  74.            Widget post ( const char *msg,
  75.                          VkSimpleWindow *parent)
  76.  
  77.            Widget post ( const char     *msg,
  78.                          const char     *helpString,
  79.                          VkSimpleWindow *parent)
  80.  
  81.            Widget post ( const char      *msg,
  82.                          XtCallbackProc   okCB,
  83.                          XtPointer        clientData,
  84.                          VkSimpleWindow  *parent = NULL)
  85.  
  86.            Widget post ( const char      *msg,
  87.                          XtCallbackProc   okCB,
  88.                          XtPointer        clientData,
  89.                          const char     *helpString,
  90.                          VkSimpleWindow  *parent = NULL)
  91.  
  92.            Widget post ( const char     *msg,
  93.                          XtCallbackProc  okCB,
  94.                          XtCallbackProc  cancelCB,
  95.                          XtPointer        clientData,
  96.                          VkSimpleWindow *parent = NULL)
  97.  
  98.            Widget post ( const char     *msg,
  99.                          XtCallbackProc  okCB,
  100.                          XtCallbackProc  cancelCB,
  101.                          XtPointer       clientData,
  102.                          char            *helpString,
  103.                          VkSimpleWindow *parent = NULL)
  104.  
  105.            Widget post ( const char     *msg,
  106.                          XtCallbackProc  okCB,
  107.                          XtCallbackProc  cancelCB,
  108.                          XtCallbackProc  applyCB,
  109.                          XtPointer       clientData,
  110.                          VkSimpleWindow *parent)
  111.  
  112.            Widget post ( const char *msg,
  113.                          Widget parent)
  114.  
  115.            Widget post ( const char     *msg,
  116.                          const char     *helpString,
  117.                          Widget parent)
  118.  
  119.            Widget post ( const char      *msg,
  120.                          XtCallbackProc   okCB,
  121.                          XtPointer        clientData,
  122.                          Widget parent)
  123.  
  124.            Widget post ( const char      *msg,
  125.                          XtCallbackProc   okCB,
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. VVVVkkkkDDDDiiiiaaaallllooooggggMMMMaaaannnnaaaaggggeeeerrrr((((3333xxxx))))                                        VVVVkkkkDDDDiiiiaaaallllooooggggMMMMaaaannnnaaaaggggeeeerrrr((((3333xxxx))))
  137.  
  138.  
  139.  
  140.                          XtPointer        clientData,
  141.                          const char     *helpString,
  142.                          Widget parent)
  143.  
  144.            Widget post ( const char     *msg,
  145.                          XtCallbackProc  okCB,
  146.                          XtCallbackProc  cancelCB,
  147.                          XtPointer        clientData,
  148.                          Widget parent)
  149.  
  150.            Widget post ( const char     *msg,
  151.                          XtCallbackProc  okCB,
  152.                          XtCallbackProc  cancelCB,
  153.                          XtPointer       clientData,
  154.                          char            *helpString,
  155.                          Widget parent)
  156.  
  157.            Widget post ( const char     *msg,
  158.                          XtCallbackProc  okCB,
  159.                          XtCallbackProc  cancelCB,
  160.                          XtCallbackProc  applyCB,
  161.                          XtPointer       clientData,
  162.                          Widget          parent)
  163.  
  164.  
  165.    PPPPoooossssttttiiiinnnngggg MMMMooooddddaaaallll DDDDiiiiaaaallllooooggggssss
  166.            virtual Widget postModal (
  167.                         const char      *message    = NULL,
  168.                         XtCallbackProc   okCB       = NULL,
  169.                         XtCallbackProc   cancelCB   = NULL,
  170.                         XtCallbackProc   applyCB    = NULL,
  171.                         XtPointer        clientData = NULL,
  172.                         const char      *helpString = NULL,
  173.                         VkSimpleWindow  *parent     = NULL,
  174.                         Widget          widgetParent = NULL);
  175.  
  176.  
  177.             Widget postModal ( const char *msg,
  178.                                VkSimpleWindow *parent)
  179.  
  180.             Widget postModal ( const char     *msg,
  181.                                const char     *helpString,
  182.                                VkSimpleWindow *parent)
  183.  
  184.             Widget postModal ( const char      *msg,
  185.                                XtCallbackProc   okCB,
  186.                                XtPointer        clientData,
  187.                                VkSimpleWindow  *parent = NULL)
  188.  
  189.             Widget postModal ( const char      *msg,
  190.                                XtCallbackProc   okCB,
  191.                                XtPointer       clientData,
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202. VVVVkkkkDDDDiiiiaaaallllooooggggMMMMaaaannnnaaaaggggeeeerrrr((((3333xxxx))))                                        VVVVkkkkDDDDiiiiaaaallllooooggggMMMMaaaannnnaaaaggggeeeerrrr((((3333xxxx))))
  203.  
  204.  
  205.  
  206.                                const char     *helpString,
  207.                                VkSimpleWindow  *parent = NULL)
  208.  
  209.             Widget postModal ( const char     *msg,
  210.                                XtCallbackProc  okCB,
  211.                                XtCallbackProc  cancelCB,
  212.                                XtPointer       clientData,
  213.                                VkSimpleWindow *parent = NULL)
  214.  
  215.             Widget postModal ( const char     *msg,
  216.                                XtCallbackProc  okCB,
  217.                                XtCallbackProc  cancelCB,
  218.                                XtPointer       clientData,
  219.                                char            *helpString,
  220.                                VkSimpleWindow *parent = NULL)
  221.  
  222.             Widget postModal ( const char     *msg,
  223.                                XtCallbackProc  okCB,
  224.                                XtCallbackProc  cancelCB,
  225.                                XtCallbackProc  applyCB,
  226.                                XtPointer       clientData,
  227.                                VkSimpleWindow *parent)
  228.  
  229.             Widget postModal ( const char *msg,
  230.                                  Widget parent)
  231.  
  232.             Widget postModal ( const char *msg,
  233.                                const char *helpString,
  234.                                Widget      parent)
  235.  
  236.             Widget postModal ( const char     *msg,
  237.                                XtCallbackProc  okCB,
  238.                                XtPointer       clientData,
  239.                                Widget          parent)
  240.  
  241.             Widget postModal ( const char     *msg,
  242.                                XtCallbackProc okCB,
  243.                                XtPointer      clientData,
  244.                                const char    *helpString,
  245.                                Widget         parent)
  246.  
  247.             Widget postModal ( const char     *msg,
  248.                                XtCallbackProc  okCB,
  249.                                XtCallbackProc  cancelCB,
  250.                                XtPointer       clientData,
  251.                                Widget          parent)
  252.  
  253.             Widget postModal ( const char     *msg,
  254.                                XtCallbackProc  okCB,
  255.                                XtCallbackProc  cancelCB,
  256.                                XtPointer       clientData,
  257.                                char            *helpString,
  258.  
  259.  
  260.  
  261.                                                                         PPPPaaaaggggeeee 4444
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268. VVVVkkkkDDDDiiiiaaaallllooooggggMMMMaaaannnnaaaaggggeeeerrrr((((3333xxxx))))                                        VVVVkkkkDDDDiiiiaaaallllooooggggMMMMaaaannnnaaaaggggeeeerrrr((((3333xxxx))))
  269.  
  270.  
  271.  
  272.                                Widget           parent)
  273.  
  274.             Widget postModal ( const char     *msg,
  275.                                XtCallbackProc  okCB,
  276.                                XtCallbackProc  cancelCB,
  277.                                XtCallbackProc  applyCB,
  278.                                XtPointer       clientData,
  279.                                Widget          parent)
  280.  
  281.  
  282.    PPPPoooossssttttiiiinnnngggg BBBBlllloooocccckkkkiiiinnnngggg DDDDiiiiaaaallllooooggggssss
  283.            virtual Widget postBlocked (
  284.                            const char      *message    = NULL,
  285.                            XtCallbackProc   okCB       = NULL,
  286.                            XtCallbackProc   cancelCB   = NULL,
  287.                            XtCallbackProc   applyCB    = NULL,
  288.                            XtPointer        clientData = NULL,
  289.                            const char      *helpString = NULL,
  290.                            VkSimpleWindow  *parent     = NULL,
  291.                            Widget          widgetParent = NULL);
  292.  
  293.  
  294.            Widget postBlocked ( const char *msg,
  295.                                 VkSimpleWindow *parent)
  296.  
  297.            Widget postBlocked ( const char     *msg,
  298.                                 const char     *helpString,
  299.                                 VkSimpleWindow *parent)
  300.  
  301.            Widget postBlocked ( const char      *msg,
  302.                                 XtCallbackProc   okCB,
  303.                                 XtPointer        clientData,
  304.                                 VkSimpleWindow  *parent = NULL)
  305.            Widget postBlocked ( const char      *msg,
  306.                                 XtCallbackProc   okCB,
  307.                                 XtPointer        clientData,
  308.                                 const char     *helpString,
  309.                                 VkSimpleWindow  *parent = NULL)
  310.  
  311.  
  312.            Widget postBlocked ( const char     *msg,
  313.                                 XtCallbackProc  okCB,
  314.                                 XtCallbackProc  cancelCB,
  315.                                 XtPointer       clientData,
  316.                                 VkSimpleWindow *parent = NULL)
  317.  
  318.            Widget postBlocked ( const char     *msg,
  319.                                 XtCallbackProc  okCB,
  320.                                 XtCallbackProc  cancelCB,
  321.                                 XtPointer       clientData,
  322.                                 char            *helpString,
  323.                                 VkSimpleWindow *parent = NULL)
  324.  
  325.  
  326.  
  327.                                                                         PPPPaaaaggggeeee 5555
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334. VVVVkkkkDDDDiiiiaaaallllooooggggMMMMaaaannnnaaaaggggeeeerrrr((((3333xxxx))))                                        VVVVkkkkDDDDiiiiaaaallllooooggggMMMMaaaannnnaaaaggggeeeerrrr((((3333xxxx))))
  335.  
  336.  
  337.  
  338.            Widget postBlocked ( const char     *msg,
  339.                                 XtCallbackProc  okCB,
  340.                                 XtCallbackProc  cancelCB,
  341.                                 XtCallbackProc  applyCB,
  342.                                 XtPointer       clientData,
  343.                                 VkSimpleWindow *parent)
  344.  
  345.  
  346.    SSSSiiiimmmmpppplllliiiiffffiiiieeeedddd BBBBlllloooocccckkkkiiiinnnngggg DDDDiiiiaaaallllooooggggssss
  347.            virtual VkDialogReason postAndWait (
  348.                             const char      *message    = NULL,
  349.                             Boolean          ok         = TRUE,
  350.                             Boolean          cancel     = TRUE,
  351.                             Boolean          apply      = FALSE,
  352.                             const char      *helpString = NULL,
  353.                             VkSimpleWindow  *parent     = NULL);
  354.  
  355.            VkDialogReason postAndWait (
  356.                             const char       *message,
  357.                             const char      *helpString,
  358.                             VkSimpleWindow  *parent     = NULL);
  359.  
  360.            VkDialogReason postAndWait ( const char      *message,
  361.                                         VkSimpleWindow  *parent)
  362.  
  363.  
  364.  
  365.    VVVViiiissssuuuuaaaallll CCCCoooonnnnttttrrrroooollll
  366.            static void useOverlayDialogs(const Boolean flag)
  367.            void setArgs (ArgList list, Cardinal argCnt)
  368.            void setVisual (VkVisual *v)
  369.  
  370.  
  371.  
  372. PPPPRRRROOOOTTTTEEEECCCCTTTTEEEEDDDD PPPPRRRROOOOTTTTOOOOCCCCOOOOLLLL SSSSUUUUMMMMMMMMAAAARRRRYYYY
  373.    MMMMaaaannnniiiippppuuuullllaaaattttiiiinnnngggg ddddiiiiaaaallllooooggggssss pppprrrriiiioooorrrr ttttoooo ppppoooossssttttiiiinnnngggg
  374.            virtual Widget prepost (
  375.                             const char      *message,
  376.                             XtCallbackProc   okCB       = NULL,
  377.                             XtCallbackProc   cancelCB   = NULL,
  378.                             XtCallbackProc   applyCB    = NULL,
  379.                             XtPointer        clientData = NULL,
  380.                             const char      *helpString = NULL,
  381.                             VkSimpleWindow  *parent     = NULL);
  382.  
  383.            Widget prepost ( const char     *message,
  384.                             const char     *helpString,
  385.                             VkSimpleWindow *parent);
  386.  
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.                                                                         PPPPaaaaggggeeee 6666
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400. VVVVkkkkDDDDiiiiaaaallllooooggggMMMMaaaannnnaaaaggggeeeerrrr((((3333xxxx))))                                        VVVVkkkkDDDDiiiiaaaallllooooggggMMMMaaaannnnaaaaggggeeeerrrr((((3333xxxx))))
  401.  
  402.  
  403.  
  404.    RRRReeeessssppppoooonnnnddddiiiinnnngggg ttttoooo UUUUsssseeeerrrr AAAAccccttttiiiioooonnnnssss
  405.            virtual void ok(Widget widget,     XtPointer callData);
  406.            virtual void cancel(Widget widget, XtPointer callData);
  407.            virtual void apply(Widget widget,  XtPointer callData);
  408.  
  409.  
  410.    CCCCrrrreeeeaaaattttiiiinnnngggg NNNNeeeewwww DDDDiiiiaaaallllooooggggssss
  411.             virtual Widget createDialog(Widget parent);
  412.  
  413.  
  414.    CCCCoooonnnnssssttttrrrruuuuccccttttoooorrrr
  415.            VkDialogManager(const char *name);
  416.  
  417.  
  418.    PPPPrrrrooootttteeeecccctttteeeedddd DDDDaaaattttaaaa MMMMeeeemmmmbbbbeeeerrrrssss
  419.            int _action;
  420.  
  421.  
  422.            Boolean _showOK;
  423.  
  424.  
  425.            Boolean _showCancel;
  426.  
  427.  
  428.            Boolean _showApply;
  429.  
  430.  
  431.            Boolean _allowMultipleDialogs;
  432.  
  433.  
  434.            Boolean _minimizeMultipleDialogs;
  435.  
  436.  
  437.  
  438.  
  439. CCCCLLLLAAAASSSSSSSS DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  440.           The VkDialogManager class is an abstract class that supports
  441.           cacheable, easy-to-use Motif dialogs for ViewKit applications. The
  442.           VkDialogManager class provides the public protocol though which all
  443.           derived classes are manipulated. This protocol is intended to
  444.           simplify the procedure of posting a dialog, and make it possible to
  445.           post dialogs without interacting directly with widgets. This is
  446.           useful because the need to report errors often occurs outside the UI
  447.           layers of an application. The VkDialogManager class uses caching to
  448.           achieve an optimal balance between the time required to create a
  449.           dialog dynamically and the time and memory needed to pre-create
  450.           dialogs.
  451.  
  452.           Dialogs may be posted using a variation of four basic member
  453.           functions: _p_o_s_t(), _p_o_s_t_M_o_d_a_l(), _p_o_s_t_B_l_o_c_k_e_d() and _p_o_s_t_A_n_d_W_a_i_t().
  454.           These member functions allow the calling application to easily
  455.           control the style of the dialog. The VkDialogManager attempts to
  456.  
  457.  
  458.  
  459.                                                                         PPPPaaaaggggeeee 7777
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466. VVVVkkkkDDDDiiiiaaaallllooooggggMMMMaaaannnnaaaaggggeeeerrrr((((3333xxxx))))                                        VVVVkkkkDDDDiiiiaaaallllooooggggMMMMaaaannnnaaaaggggeeeerrrr((((3333xxxx))))
  467.  
  468.  
  469.  
  470.           cache and reuse existing dialog widgets wherever possible, and also
  471.           allows the calling application to determine which buttons and labels
  472.           appear on any dialog, as well as to specify functions to be called
  473.           when various dialog buttons are selected.
  474.  
  475.           All classes derived from VkDialogManager catch the window manager
  476.           close function and redirect it to the "cancel" action normally
  477.           associated with the dialog.
  478.  
  479.  
  480.  
  481. SSSSEEEETTTTTTTTIIIINNNNGGGG CCCCRRRREEEEAAAATTTTIIIIOOOONNNN----TTTTIIIIMMMMEEEE RRRREEEESSSSOOOOUUUURRRRCCCCEEEESSSS FFFFOOOORRRR DDDDIIIIAAAALLLLOOOOGGGGSSSS
  482.      There is no way in the ViewKit dialogs' API, theXyzDialog->post(), for an
  483.      application to specify an arglist.  There are ways around this:
  484.  
  485.      +o    Setting dialogs in the deepest available overlay can most easily be
  486.           done by using _u_s_e_O_v_e_r_l_a_y_D_i_a_l_o_g_s.
  487.  
  488.      +o    Setting dialogs to a specific visual is most easily done by using
  489.           _s_e_t_V_i_s_u_a_l().  This _V_k_V_i_s_u_a_l will be used for any subsequent dialog
  490.           creation.
  491.  
  492.      +o    _s_e_t_A_r_g_s() allows passing an arbitrary _a_r_g_L_i_s_t.  This list will be
  493.           used for any subsequent dialog creation.
  494.  
  495.      Dialog arguments should be set once, before any dialog is created.
  496.      Resetting the dialog creation arguments after the first dialog is created
  497.      results in an undefined action.  The reason is that, due to ViewKit's
  498.      dialog caching, later setting of creation arguments is not always
  499.      predictable.
  500.  
  501.  
  502. DDDDIIIIAAAALLLLOOOOGGGGSSSS IIIINNNN TTTTHHHHEEEE OOOOVVVVEEEERRRRLLLLAAAAYYYY PPPPLLLLAAAANNNNEEEESSSS
  503.      By default, dialogs appear in the normal planes.  A ViewKit application's
  504.      dialogs may be explicitly placed in the deepest available overlay planes.
  505.      Doing so prevents dialogs from causing expose events and disturbing such
  506.      things as complex GL rendering.  Whether or not the dialogs look as nice
  507.      as they do in the normal planes depends on how deep the deepest available
  508.      overlay visual is.  The current implementation is global.  For a single
  509.      application, either all dialogs go in the overlay planes or none of them
  510.      do.  That may be relaxed in a future release.
  511.  
  512.      There are three ways to enable dialogs in the overlay planes:
  513.  
  514.      +o    Call VkDialogManager::useOverlayDialogs(TRUE) in your application.
  515.           This will force all dialogs to be in the overlay planes, with no way
  516.           to put them back in the normal planes without recompiling.
  517.  
  518.      +o    Put the resource string "*useOverlayDialogs: True" in your
  519.           application's app-defaults file.  This will put dialogs in the
  520.           overlay planes by default, but allow users to use the normal planes
  521.           by changing their .Xdefaults file.
  522.  
  523.  
  524.  
  525.                                                                         PPPPaaaaggggeeee 8888
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532. VVVVkkkkDDDDiiiiaaaallllooooggggMMMMaaaannnnaaaaggggeeeerrrr((((3333xxxx))))                                        VVVVkkkkDDDDiiiiaaaallllooooggggMMMMaaaannnnaaaaggggeeeerrrr((((3333xxxx))))
  533.  
  534.  
  535.  
  536.      +o    Ask the user to add the "-useOverlayDialogs" command line switch
  537.           when they run your application.  This will put dialogs in the normal
  538.           planes by default, but allow the user to explicitly ask that the
  539.           overlay planes be used.
  540.  
  541.      There are several disadvantages to using the overlay planes, so dialogs
  542.      should be put there only when the advantages outweigh the disadvantages:
  543.  
  544.      +o    The colormap in the overlay planes may have fewer pixels.  On some
  545.           hardware, the deepest overlay only has three color entries.  (The
  546.           fourth entry is a transparent pixel.)  When there are fewer colors
  547.           available, dialogs in the overlay planes have a different appearance
  548.           - especially with some of the less-common color schemes.
  549.  
  550.      +o    Other applications that are using the overlay planes at the same
  551.           time will display in the wrong colors when an overlay dialog appears
  552.           (i.e. colors will flash).  This happens because the dialog's
  553.           colormap will get installed and replace any previous overlay
  554.           colormap.
  555.  
  556.      +o    When a dialog is in the overlay planes, 4Dwm puts the window manager
  557.           border in the popup visual.  The title bar of the window appears
  558.           with the wrong colors and, as with (2), the window appears with the
  559.           wrong colors when another application uses the overlay planes (e.g.
  560.           4Dwm's root-window popup dialog).
  561.  
  562.      For more information see /_u_s_r/_s_h_a_r_e/_s_r_c/_V_i_e_w_K_i_t/_B_a_s_i_c/_V_i_s_u_a_l/*.
  563.  
  564.  
  565.  
  566. PPPPOOOOSSSSTTTTIIIINNNNGGGG DDDDIIIIAAAALLLLOOOOGGGGSSSS
  567.  
  568.  
  569. DDDDEEEERRRRIIIIVVVVIIIINNNNGGGG SSSSUUUUBBBBCCCCLLLLAAAASSSSSSSSEEEESSSS
  570.           Derived classes generally only need to override the function
  571.           _c_r_e_a_t_e_D_i_a_l_o_g() to return a dialog widget of the desired type. The
  572.           dialog widget returned by this function must be a subclass of
  573.           XmMessageBox or XmSelectionBox. Classes corresponding to the
  574.           standard Motif dialog widgets have already been defined. Custom
  575.           dialog classes should normally be derived from VkGenericDialog.
  576.  
  577.  
  578.  
  579. FFFFUUUUNNNNCCCCTTTTIIIIOOOONNNN DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNNSSSS
  580.    ggggeeeettttSSSSccccrrrreeeeeeeennnn(((()))) ---- VVVViiiieeeewwwwKKKKiiiitttt 2222....1111 oooonnnnllllyyyy
  581.            VkScreen *getScreen();
  582.  
  583.  
  584.           Return the VkScreen object associated with this dialogManager.
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.                                                                         PPPPaaaaggggeeee 9999
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598. VVVVkkkkDDDDiiiiaaaallllooooggggMMMMaaaannnnaaaaggggeeeerrrr((((3333xxxx))))                                        VVVVkkkkDDDDiiiiaaaallllooooggggMMMMaaaannnnaaaaggggeeeerrrr((((3333xxxx))))
  599.  
  600.  
  601.  
  602.    pppprrrreeeeppppoooosssstttt(((())))
  603.            Widget prepost(const char *message,
  604.                           const char *helpString,
  605.                           VkSimpleWindow* parent);
  606.  
  607.            virtual Widget prepost(
  608.                           const char      *message,
  609.                           XtCallbackProc   okCB       = NULL,
  610.                           XtCallbackProc   cancelCB   = NULL,
  611.                           XtCallbackProc   applyCB    = NULL,
  612.                           XtPointer        clientData = NULL,
  613.                           const char      *helpString = NULL,
  614.                           VkSimpleWindow  *parent     = NULL);
  615.  
  616.  
  617.           This protected function is called from the VkDialogManager _p_o_s_t()
  618.           function. The _p_r_e_p_o_s_t() function is responsible for finding or
  619.           creating a dialog to be displayed by one of the _p_o_s_t() functions.
  620.           Derived classes that wish to perform some operations on a dialog
  621.           widget before displaying it on the screen should override this
  622.           function, call the VkDialogManager function directly to obtain a
  623.           widget, do whatever additional operations are desired and then
  624.           return the Widget returned by _V_k_D_i_a_l_o_g_M_a_n_a_g_e_r::_p_r_e_p_o_s_t().
  625.  
  626.    ooookkkk(((())))
  627.            virtual void ok(Widget w, XtPointer clientData);
  628.  
  629.  
  630.           This function provides a hook for derived classes that need to know
  631.           when the user has selected the OK button. Applications that use
  632.           dialogs should register Xt callbacks with the _p_o_s_t() method to be
  633.           notified.
  634.  
  635.    ccccaaaannnncccceeeellll(((())))
  636.            virtual void cancel(Widget w, XtPointer clientData);
  637.  
  638.  
  639.           This function provides a hook for derived classes that need to know
  640.           when the user has selected the Cancel button. Applications that use
  641.           dialogs should register an Xt-style callback with the _p_o_s_t() method
  642.           to be notified.
  643.  
  644.    aaaappppppppllllyyyy(((())))
  645.            virtual void apply(Widget w, XtPointer clientData);
  646.  
  647.  
  648.           This function provides a hook for derived classes that need to know
  649.           when the user has selected the Apply button. Applications that use
  650.           dialogs should register an Xt-style callback with the _p_o_s_t() method
  651.           to be notified.
  652.  
  653.  
  654.  
  655.  
  656.  
  657.                                                                        PPPPaaaaggggeeee 11110000
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664. VVVVkkkkDDDDiiiiaaaallllooooggggMMMMaaaannnnaaaaggggeeeerrrr((((3333xxxx))))                                        VVVVkkkkDDDDiiiiaaaallllooooggggMMMMaaaannnnaaaaggggeeeerrrr((((3333xxxx))))
  665.  
  666.  
  667.  
  668.    ccccrrrreeeeaaaatttteeeeDDDDiiiiaaaalllloooogggg(((())))
  669.            virtual Widget createDialog(Widget parent) = 0;
  670.  
  671.  
  672.           Derived classes must override this function, which is called when
  673.           the VkDialogManager class requires a new dialog widget. The function
  674.           is expected to create and return a dialog of desired type. The
  675.           dialog must be a child of the given parent.
  676.  
  677.    VVVVkkkkDDDDiiiiaaaallllooooggggMMMMaaaannnnaaaaggggeeeerrrr(((())))
  678.            VkDialogManager(const char* name);
  679.  
  680.  
  681.           The constructor initializes the VkDialogManager. It can only be
  682.           called by derived classes.
  683.  
  684.    ~~~~VVVVkkkkDDDDiiiiaaaallllooooggggMMMMaaaannnnaaaaggggeeeerrrr(((())))
  685.            virtual void ~VkDialogManager(void);
  686.  
  687.  
  688.           The destructor frees all memory associated with the VkDialogManager
  689.           class and destroys all cached dialog widgets.
  690.  
  691.    sssseeeettttTTTTiiiittttlllleeee(((())))
  692.            void setTitle(const char* nextTitle);
  693.  
  694.  
  695.           This function can be used to specify the title of the next dialog
  696.           widget to be posted by this dialog manager. The title is reset after
  697.           each call to one of the _p_o_s_t() member functions. The string provided
  698.           is first treated as the name of a resource, and only used directly
  699.           if no resource is found. For example, a dialog's title might be
  700.           specified as follows:
  701.  
  702.            theErrorDialog->setTitle("error37Title");
  703.  
  704.      The application's application defaults might then specify the real title
  705.      as:
  706.  
  707.            *error37Title: "Internal Malfunction Error Dialog"
  708.  
  709.      The most common use of this feature is for internationalization.
  710.      Applications that do not care about the ability to change titles without
  711.      recompiling can simply specify the desired string by setting a resource.
  712.  
  713.           If _s_e_t_T_i_t_l_e() is not called prior to posting a dialog, the dialog
  714.           title defaults to the value of the XmNdialogTitle resource for the
  715.           given widget. If no such resource is set, the title defaults to the
  716.           name of the application.
  717.  
  718.  
  719.  
  720.  
  721.  
  722.  
  723.                                                                        PPPPaaaaggggeeee 11111111
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730. VVVVkkkkDDDDiiiiaaaallllooooggggMMMMaaaannnnaaaaggggeeeerrrr((((3333xxxx))))                                        VVVVkkkkDDDDiiiiaaaallllooooggggMMMMaaaannnnaaaaggggeeeerrrr((((3333xxxx))))
  731.  
  732.  
  733.  
  734.    sssseeeettttBBBBuuuuttttttttoooonnnnLLLLaaaabbbbeeeellllssss(((())))
  735.            void setButtonLabels(const char *nextOK,
  736.                                 const char *nextCancel,
  737.                                 const char *nextApply);
  738.  
  739.  
  740.           This function can be used to specify the labels on the buttons of
  741.           the next dialog to be posted. The values affect only the next dialog
  742.           to be posted and are reset afterwards to their default values. Like
  743.           _s_e_t_T_i_t_l_e() this function first treats each given string as the name
  744.           of a resource to be loaded, then as the label itself. If no labels
  745.           are specified, the defaults are normally as follows:
  746.  
  747.  
  748.            BBBBuuuuttttttttoooonnnn  FFFFiiiirrrrsssstttt CCCChhhhooooiiiicccceeee                   FFFFaaaallllllllbbbbaaaacccckkkk
  749.            OK     Value of XmNokLabelString        "OK"
  750.            Cancel Value of XmNcancelLableString    "Cancel"
  751.            Apply  Value of XmNapplyLableString     "Apply"
  752.  
  753.  
  754.    uuuunnnnppppoooosssstttt(((())))
  755.            void unpost(void);
  756.  
  757.  
  758.           This function removes the most recently posted dialog.
  759.  
  760.    uuuunnnnppppoooosssstttt(((())))
  761.            void unpost(Widget w);
  762.  
  763.  
  764.           This function removes the given dialog widget.
  765.  
  766.    uuuunnnnppppoooossssttttAAAAllllllll(((())))
  767.            void unpostAll(void);
  768.  
  769.  
  770.           This function removes all dialogs of a given type from the screen.
  771.  
  772.  
  773.    cccceeeennnntttteeeerrrrOOOOnnnnSSSSccccrrrreeeeeeeennnn(((())))
  774.            void centerOnScreen(Boolean center);
  775.  
  776.  
  777.           By default, dialogs are centered over a parent window, as specified
  778.           in the call to _p_o_s_t(), or over the application's main window, if no
  779.           window is given. If this function is called with a value of TRUE
  780.           prior to posting a dialog, the dialog will be force to the center of
  781.           the screen, regardless of the position of the specified parent.
  782.  
  783.  
  784.  
  785.  
  786.  
  787.  
  788.  
  789.                                                                        PPPPaaaaggggeeee 11112222
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796. VVVVkkkkDDDDiiiiaaaallllooooggggMMMMaaaannnnaaaaggggeeeerrrr((((3333xxxx))))                                        VVVVkkkkDDDDiiiiaaaallllooooggggMMMMaaaannnnaaaaggggeeeerrrr((((3333xxxx))))
  797.  
  798.  
  799.  
  800.    eeeennnnaaaabbbblllleeeeCCCCaaaannnncccceeeellllBBBBuuuuttttttttoooonnnn(((())))
  801.             void enableCancelButton (Boolean b);
  802.  
  803.  
  804.           Sets whether or not the default will be to provide a _C_A_N_C_E_L button
  805.           in future dialogs.
  806.  
  807.  
  808.    llllaaaassssttttPPPPoooosssstttteeeedddd(((())))
  809.            Widget lastPosted(void);
  810.  
  811.  
  812.           This function returns the Widget ID of the last posted dialog. In
  813.           some cases, it might be useful to be able to manipulate this widget
  814.           directly, while it is posted.
  815.  
  816.    ppppoooosssstttt(((())))
  817.            virtual Widget post ( const char      *message    = NULL,
  818.                                  XtCallbackProc   okCB       = NULL,
  819.                                  XtCallbackProc   cancelCB   = NULL,
  820.                                  XtCallbackProc   applyCB    = NULL,
  821.                                  XtPointer        clientData = NULL,
  822.                                  const char      *helpString = NULL,
  823.                                  VkSimpleWindow  *parent     = NULL);
  824.  
  825.  
  826.           This member function displays a new dialog widget, attempting to use
  827.           cached dialogs if possible. Like all Motif dialogs, the application
  828.           is expected to return to the event loop to allow the user to
  829.           interact with the posted dialog. With no arguments, _p_o_s_t() simply
  830.           displays the dialog. This may be appropriate for some derived
  831.           classes that may not support a message.  If an initial argument is
  832.           given, the dialog displays the indicated message. The _m_e_s_s_a_g_e is
  833.           first treated as the name of a resource to be loaded and uses as the
  834.           string.  If no resource is found, the string itself is assumed to be
  835.           the dialog message.
  836.  
  837.           The three optional callback arguments must be Xt-style callbacks to
  838.           be called if the corresponding button is selected by the user. The
  839.           presence or absence of these callbacks provide some control over
  840.           what buttons appear in the posted dialog. Some dialogs, however, may
  841.           override this behavior to force certain buttons to appear. For
  842.           example, a VkWarningDialog will normally have only an OK button. By
  843.           calling the _p_o_s_t() function with callbacks for the cancel and apply
  844.           operations, a warning dialog will appear with three buttons, ok,
  845.           cancel, and apply. The _c_l_i_e_n_t_D_a_t_a argument allows the caller to
  846.           specify data to be passed to these callbacks when they are called.
  847.  
  848.           To support context-sensitive help, each individual dialog can supply
  849.           a help string to be passed to the help system when the user requests
  850.           help for this dialog.
  851.  
  852.  
  853.  
  854.  
  855.                                                                        PPPPaaaaggggeeee 11113333
  856.  
  857.  
  858.  
  859.  
  860.  
  861.  
  862. VVVVkkkkDDDDiiiiaaaallllooooggggMMMMaaaannnnaaaaggggeeeerrrr((((3333xxxx))))                                        VVVVkkkkDDDDiiiiaaaallllooooggggMMMMaaaannnnaaaaggggeeeerrrr((((3333xxxx))))
  863.  
  864.  
  865.  
  866.           The final optional argument allows the caller to specify a ViewKit
  867.           VkSimpleWindow over which this dialog should be centered. If this
  868.           argument is not supplied, the dialog will be centered over the
  869.           application's main window.
  870.  
  871.    ppppoooosssstttt(((())))
  872.            Widget post ( const char *msg,
  873.                          VkSimpleWindow *parent)
  874.  
  875.            Widget post ( const char     *msg,
  876.                          const char     *helpString,
  877.                          VkSimpleWindow *parent)
  878.  
  879.            Widget post ( const char      *msg,
  880.                          XtCallbackProc   okCB,
  881.                          XtPointer        clientData,
  882.                          VkSimpleWindow  *parent = NULL)
  883.  
  884.            Widget post ( const char      *msg,
  885.                          XtCallbackProc   okCB,
  886.                          XtPointer        clientData,
  887.                          const char     *helpString,
  888.                          VkSimpleWindow  *parent = NULL)
  889.  
  890.            Widget post ( const char     *msg,
  891.                          XtCallbackProc  okCB,
  892.                          XtCallbackProc  cancelCB,
  893.                          XtPointer        clientData,
  894.                          VkSimpleWindow *parent = NULL)
  895.  
  896.            Widget post ( const char     *msg,
  897.                          XtCallbackProc  okCB,
  898.                          XtCallbackProc  cancelCB,
  899.                          XtPointer       clientData,
  900.                          char            *helpString,
  901.                          VkSimpleWindow *parent = NULL)
  902.  
  903.            Widget post ( const char     *msg,
  904.                          XtCallbackProc  okCB,
  905.                          XtCallbackProc  cancelCB,
  906.                          XtCallbackProc  applyCB,
  907.                          XtPointer       clientData,
  908.                          VkSimpleWindow *parent)
  909.  
  910.  
  911.           These member functions provide a large number of variations on the
  912.           basic _p_o_s_t() member function. The arguments are designed to support
  913.           typical arrangements of arguments without requiring the complete
  914.           list of parameters supported by the basic function.
  915.  
  916.  
  917.  
  918.  
  919.  
  920.  
  921.                                                                        PPPPaaaaggggeeee 11114444
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928. VVVVkkkkDDDDiiiiaaaallllooooggggMMMMaaaannnnaaaaggggeeeerrrr((((3333xxxx))))                                        VVVVkkkkDDDDiiiiaaaallllooooggggMMMMaaaannnnaaaaggggeeeerrrr((((3333xxxx))))
  929.  
  930.  
  931.  
  932.    ppppoooossssttttMMMMooooddddaaaallll(((())))
  933.            virtual Widget postModal (
  934.                           const char      *message    = NULL,
  935.                           XtCallbackProc   okCB       = NULL,
  936.                           XtCallbackProc   cancelCB   = NULL,
  937.                           XtCallbackProc   applyCB    = NULL,
  938.                           XtPointer        clientData = NULL,
  939.                           const char      *helpString = NULL,
  940.                           VkSimpleWindow  *parent     = NULL);
  941.  
  942.  
  943.           This function is similar to the _p_o_s_t() member function, except that
  944.           the dialog will be a modal dialog, which must be dismissed before
  945.           the application can accept other input.
  946.  
  947.    ppppoooossssttttMMMMooooddddaaaallll(((())))
  948.            Widget postModal ( const char *msg,
  949.                               VkSimpleWindow *parent)
  950.  
  951.            Widget postModal ( const char     *msg,
  952.                               const char     *helpString,
  953.                               VkSimpleWindow *parent)
  954.  
  955.            Widget postModal ( const char      *msg,
  956.                              XtCallbackProc   okCB,
  957.                               XtPointer        clientData,
  958.                               VkSimpleWindow  *parent = NULL)
  959.  
  960.            Widget postModal ( const char      *msg,
  961.                               XtCallbackProc   okCB,
  962.                               XtPointer       clientData,
  963.                               const char     *helpString,
  964.                               VkSimpleWindow  *parent = NULL)
  965.  
  966.            Widget postModal ( const char     *msg,
  967.                               XtCallbackProc  okCB,
  968.                               XtCallbackProc  cancelCB,
  969.                               XtPointer       clientData,
  970.                               VkSimpleWindow *parent = NULL)
  971.  
  972.            Widget postModal ( const char     *msg,
  973.                               XtCallbackProc  okCB,
  974.                               XtCallbackProc  cancelCB,
  975.                               XtPointer       clientData,
  976.                               char            *helpString,
  977.                               VkSimpleWindow *parent = NULL)
  978.  
  979.            Widget postModal ( const char     *msg,
  980.                               XtCallbackProc  okCB,
  981.                               XtCallbackProc  cancelCB,
  982.                               XtCallbackProc  applyCB,
  983.                               XtPointer       clientData,
  984.  
  985.  
  986.  
  987.                                                                        PPPPaaaaggggeeee 11115555
  988.  
  989.  
  990.  
  991.  
  992.  
  993.  
  994. VVVVkkkkDDDDiiiiaaaallllooooggggMMMMaaaannnnaaaaggggeeeerrrr((((3333xxxx))))                                        VVVVkkkkDDDDiiiiaaaallllooooggggMMMMaaaannnnaaaaggggeeeerrrr((((3333xxxx))))
  995.  
  996.  
  997.  
  998.                               VkSimpleWindow *parent)
  999.  
  1000.  
  1001.           These member functions provide a large number of variations on the
  1002.           basic _p_o_s_t_M_o_d_a_l() member function. The arguments are designed to
  1003.           support typical arrangements of arguments without requiring the
  1004.           complete list of parameters supported by the basic function.
  1005.  
  1006.    ppppoooossssttttBBBBlllloooocccckkkkeeeedddd(((())))
  1007.            virtual Widget postBlocked (
  1008.                               const char      *message    = NULL,
  1009.                               XtCallbackProc   okCB       = NULL,
  1010.                               XtCallbackProc   cancelCB   = NULL,
  1011.                               XtCallbackProc   applyCB    = NULL,
  1012.                               XtPointer        clientData = NULL,
  1013.                               const char      *helpString = NULL,
  1014.                               VkSimpleWindow  *parent     = NULL);
  1015.  
  1016.  
  1017.           This function is similar to _p_o_s_t() except that after posting the
  1018.           dialog, the function enters a secondary event loop which does not
  1019.           return until the user has dismissed the dialog. The dialog is posted
  1020.           as a full application modal dialog to minimize potential problems
  1021.           that could be caused by the secondary event loop, but applications
  1022.           should be aware that the second event loop is being used, and be
  1023.           sure that no non-re-entrant code can be called.
  1024.  
  1025.    ppppoooossssttttBBBBlllloooocccckkkkeeeedddd(((())))
  1026.            Widget postBlocked ( const char *msg,
  1027.                                 VkSimpleWindow *parent)
  1028.  
  1029.            Widget postBlocked ( const char     *msg,
  1030.                                 const char     *helpString,
  1031.                                 VkSimpleWindow *parent)
  1032.  
  1033.            Widget postBlocked ( const char      *msg,
  1034.                                 XtCallbackProc   okCB,
  1035.                                 XtPointer        clientData,
  1036.                                 VkSimpleWindow  *parent = NULL)
  1037.  
  1038.            Widget postBlocked ( const char      *msg,
  1039.                                 XtCallbackProc   okCB,
  1040.                                 XtPointer        clientData,
  1041.                                 const char     *helpString,
  1042.                                 VkSimpleWindow  *parent = NULL)
  1043.  
  1044.            Widget postBlocked ( const char     *msg,
  1045.                                 XtCallbackProc  okCB,
  1046.                                 XtCallbackProc  cancelCB,
  1047.                                 XtPointer       clientData,
  1048.                                 VkSimpleWindow *parent = NULL)
  1049.  
  1050.  
  1051.  
  1052.  
  1053.                                                                        PPPPaaaaggggeeee 11116666
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060. VVVVkkkkDDDDiiiiaaaallllooooggggMMMMaaaannnnaaaaggggeeeerrrr((((3333xxxx))))                                        VVVVkkkkDDDDiiiiaaaallllooooggggMMMMaaaannnnaaaaggggeeeerrrr((((3333xxxx))))
  1061.  
  1062.  
  1063.  
  1064.            Widget postBlocked ( const char     *msg,
  1065.                                 XtCallbackProc  okCB,
  1066.                                 XtCallbackProc  cancelCB,
  1067.                                 XtPointer       clientData,
  1068.                                 char            *helpString,
  1069.                                 VkSimpleWindow *parent = NULL)
  1070.  
  1071.            Widget postBlocked ( const char     *msg,
  1072.                                 XtCallbackProc  okCB,
  1073.                                 XtCallbackProc  cancelCB,
  1074.                                 XtCallbackProc  applyCB,
  1075.                                 XtPointer       clientData,
  1076.                                 VkSimpleWindow *parent)
  1077.  
  1078.  
  1079.           These member functions provide a large number of variations on the
  1080.           basic _p_o_s_t_B_l_o_c_k_e_d() member function. The arguments are designed to
  1081.           support typical arrangements of arguments without requiring the
  1082.           complete list of parameters supported by the basic function.
  1083.  
  1084.    ppppoooossssttttAAAAnnnnddddWWWWaaaaiiiitttt(((())))
  1085.            virtual VkDialogReason postAndWait (
  1086.                             const char      *message    = NULL,
  1087.                              Boolean          ok         = TRUE,
  1088.                              Boolean          cancel     = TRUE,
  1089.                              Boolean          apply      = FALSE,
  1090.                              const char      *helpString = NULL,
  1091.                              VkSimpleWindow  *parent     = NULL);
  1092.  
  1093.  
  1094.           This function is similar to _p_o_s_t() except that the application
  1095.           enters a secondary event loop after posting the dialog and does not
  1096.           return until the user has dismissed the dialog. Unlike
  1097.           _p_o_s_t_B_l_o_c_k_e_d(), _p_o_s_t_A_n_d_W_a_i_t() handles all callbacks internally and
  1098.           returns a value that reports what button was selected. The possible
  1099.           return values are VkDialogManager::OK, VkDialogManager::CANCEL, or
  1100.           VkDialogManager::APPLY. This function is useful for applications in
  1101.           which it is necessary or more convenient to not go on to the next
  1102.           line of code until the user has dismissed the dialog. For example,
  1103.           an application opening a file might use the VkFileSelectionDialog (a
  1104.           class derived from VkDialogManager) as follows:
  1105.  
  1106.  
  1107.            if(theFileSelectionDialog->postAndWait( )
  1108.                         == VkDialogManager::OK)
  1109.               fd = open(theFileSelectionDialog->fileName(),
  1110.                         O_RDONLY);
  1111.  
  1112.  
  1113.  
  1114.  
  1115.  
  1116.  
  1117.  
  1118.  
  1119.                                                                        PPPPaaaaggggeeee 11117777
  1120.  
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126. VVVVkkkkDDDDiiiiaaaallllooooggggMMMMaaaannnnaaaaggggeeeerrrr((((3333xxxx))))                                        VVVVkkkkDDDDiiiiaaaallllooooggggMMMMaaaannnnaaaaggggeeeerrrr((((3333xxxx))))
  1127.  
  1128.  
  1129.  
  1130.           When _p_o_s_t_A_n_d_W_a_i_t() is used, the dialog is posted as a full
  1131.           application modal dialog to minimize potential problems that could
  1132.           be caused by the secondary event loop, but applications should be
  1133.           aware that the second event loop is being used, and be sure that no
  1134.           non-re-entrant code can be called.
  1135.  
  1136.           Because no callbacks are involved when using this interface, the
  1137.           second, third, and forth arguments are Boolean values that indicate
  1138.           which buttons should appear in the dialog. Note that these flags are
  1139.           considered along with the default behavior of each type of dialog.
  1140.           For example, a VkQuestionDialog will always have OK and Cancel
  1141.           buttons, but the caller can add an "apply" button if needed.
  1142.  
  1143.    ppppoooossssttttAAAAnnnnddddWWWWaaaaiiiitttt(((())))
  1144.            VkDialogReason postAndWait ( const char       *message,
  1145.                                         const char      *helpString,
  1146.                                         VkSimpleWindow  *parent     = NULL);
  1147.  
  1148.            VkDialogReason postAndWait ( const char      *message,
  1149.                                         VkSimpleWindow  *parent)
  1150.  
  1151.  
  1152.           These member functions provide a large number of variations on the
  1153.           basic _p_o_s_t_A_n_d_W_a_i_t() member function. The arguments are designed to
  1154.           support typical arrangements of arguments without requiring the
  1155.           complete list of parameters supported by the basic function.
  1156.  
  1157.  
  1158.    uuuusssseeeeOOOOvvvveeeerrrrllllaaaayyyyDDDDiiiiaaaallllooooggggssss(((())))
  1159.            static void useOverlayDialogs(const Boolean flag);
  1160.  
  1161.  
  1162.           Controls whether dialogs that are created subsequently will be in
  1163.           the normal planes (_f_l_a_g = _F_a_l_s_e) or in the deepest available overlay
  1164.           (_f_l_a_g = _T_r_u_e).
  1165.  
  1166.  
  1167.    sssseeeettttVVVViiiissssuuuuaaaallll(((())))
  1168.            void setVisual (VkVisual *v)
  1169.  
  1170.  
  1171.           Used to set visual resources before creating the first dialog.  In
  1172.           the event that both this and the arglist are set (see _s_e_t_A_r_g_s(),
  1173.           below), this overrides any visual arguments in the arglist.
  1174.  
  1175.  
  1176.    sssseeeettttAAAArrrrggggssss(((())))
  1177.            void setArgs (ArgList list, Cardinal argCnt)
  1178.  
  1179.  
  1180.  
  1181.  
  1182.  
  1183.  
  1184.  
  1185.                                                                        PPPPaaaaggggeeee 11118888
  1186.  
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192. VVVVkkkkDDDDiiiiaaaallllooooggggMMMMaaaannnnaaaaggggeeeerrrr((((3333xxxx))))                                        VVVVkkkkDDDDiiiiaaaallllooooggggMMMMaaaannnnaaaaggggeeeerrrr((((3333xxxx))))
  1193.  
  1194.  
  1195.  
  1196.           Pass in resources to be used when creating the first dialog.  These
  1197.           may or may not include visuals arguments.
  1198.  
  1199.  
  1200.  
  1201. DDDDAAAATTTTAAAA MMMMEEEEMMMMBBBBEEEERRRR DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNNSSSS
  1202.    ____aaaaccccttttiiiioooonnnn
  1203.            int _action;
  1204.  
  1205.  
  1206.           This protected member always contains a value that indicates the
  1207.           user's action in choosing dialog buttons. The possible values are
  1208.           VkDialogManager::OK, VkDialogManager::CANCEL,
  1209.           VkDialogManager::APPLY, or VkDialogManager::NONE.
  1210.  
  1211.    ____sssshhhhoooowwwwOOOOKKKK
  1212.       Boolean _showOK;
  1213.  
  1214.  
  1215.  
  1216.      This member can be set to TRUE by derived classes to force the OK button
  1217.      to always be shown for all dialogs of a particular type. If set to FALSE,
  1218.      the appearance of the OK button depends on what callbacks have been
  1219.      specified when posting the dialog.
  1220.  
  1221.    ____sssshhhhoooowwwwCCCCaaaannnncccceeeellll
  1222.            Boolean _showCancel;
  1223.  
  1224.  
  1225.           This member can be set to TRUE by derived classes to force the
  1226.           Cancel button to always be shown for all dialogs of a particular
  1227.           type. If set to FALSE, the appearance of the Cancel button depends
  1228.           on what callbacks have been specified when posting the dialog.
  1229.  
  1230.    ____sssshhhhoooowwwwAAAAppppppppllllyyyy
  1231.            Boolean _showApply;
  1232.  
  1233.  
  1234.           This member can be set to TRUE by derived classes to force the Apply
  1235.           button to always be shown for all dialogs of a particular type. If
  1236.           set to FALSE, the appearance of the Apply button depends on what
  1237.           callbacks have been specified when posting the dialog.
  1238.  
  1239.    ____aaaalllllllloooowwwwMMMMuuuullllttttiiiipppplllleeeeDDDDiiiiaaaallllooooggggssss
  1240.            Boolean _allowMultipleDialogs;
  1241.  
  1242.  
  1243.           The default behavior of the VkDialogManager class is to allow
  1244.           multiple dialogs of any given type to be posted at once. The
  1245.           VkDialogManager class calls derived class member function
  1246.           _c_r_e_a_t_e_D_i_a_l_o_g() as needed to create additional widgets. For some
  1247.           types of dialogs, it makes more sense to allow only one instance of
  1248.  
  1249.  
  1250.  
  1251.                                                                        PPPPaaaaggggeeee 11119999
  1252.  
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258. VVVVkkkkDDDDiiiiaaaallllooooggggMMMMaaaannnnaaaaggggeeeerrrr((((3333xxxx))))                                        VVVVkkkkDDDDiiiiaaaallllooooggggMMMMaaaannnnaaaaggggeeeerrrr((((3333xxxx))))
  1259.  
  1260.  
  1261.  
  1262.           a particular dialog type to exist at any one time. For example,
  1263.           multiple nested calls to _b_u_s_y() (see VkApp(3X)) should not normally
  1264.           produce multiple dialogs. If a derived class sets
  1265.           _allowMultipleDialogs to FALSE, the VkDialogManager class will not
  1266.           create additional dialogs, but will reuse an existing dialog in all
  1267.           cases.
  1268.  
  1269.    ____mmmmiiiinnnniiiimmmmiiiizzzzeeeeMMMMuuuullllttttiiiipppplllleeeeDDDDiiiiaaaallllooooggggssss
  1270.            Boolean _minimizeMultipleDialogs;
  1271.  
  1272.  
  1273.           Normally, VkDialogManager caches dialogs on a per-toplevel window
  1274.           basis. If there are many toplevel windows, this could result in
  1275.           having many dialogs of the same type, which may be undesirable for
  1276.           some types of dialogs, particularly if they are expensive to create.
  1277.           If the flag _minimizeMultipleDialogs is set to TRUE, VkDialogManager
  1278.           will reuse any existing dialog that is not currently displayed. A
  1279.           new dialog will be created only if all existing instances of the
  1280.           dialog type are currently being displayed.
  1281.  
  1282.    pppprrrreeeeppppoooossssttttCCCCaaaallllllllbbbbaaaacccckkkk
  1283.            static const char* const prepostCallback;
  1284.  
  1285.  
  1286.           This callback is invoked just before a dialog is displayed. The
  1287.           _c_a_l_l_D_a_t_a parameter indicates the dialog widget about to be
  1288.           displayed.
  1289.  
  1290. IIIINNNNHHHHEEEERRRRIIIITTTTEEEEDDDD MMMMEEEEMMMMBBBBEEEERRRR FFFFUUUUNNNNCCCCTTTTIIIIOOOONNNNSSSS
  1291.    IIIInnnnhhhheeeerrrriiiitttteeeedddd ffffrrrroooommmm VVVVkkkkCCCCaaaallllllllbbbbaaaacccckkkkOOOObbbbjjjjeeeecccctttt
  1292.           callCallbacks(), addCallback(), removeCallback(),
  1293.           removeAllCallbacks()
  1294.  
  1295.    IIIInnnnhhhheeeerrrriiiitttteeeedddd ffffrrrroooommmm VVVVkkkkCCCCoooommmmppppoooonnnneeeennnntttt
  1296.           installDestroyHandler(), removeDestroyHandler(), widgetDestroyed(),
  1297.           afterRealizeHook(), setDefaultResources(), getResources(),
  1298.            name(), baseWidget() okToQuit(), _name, _baseWidget, _w,
  1299.           deleteCallback
  1300.  
  1301.  
  1302. KKKKNNNNOOOOWWWWNNNN DDDDEEEERRRRIIIIVVVVEEEEDDDD CCCCLLLLAAAASSSSSSSSEEEESSSS
  1303.      VkBusyDialog, VkInterruptDialog, VkErrorDialog, VkFatalErrorDialog,
  1304.      VkFileSelectionDialog, VkWarningDialog, VkGenericDialog, VkPrefDialog,
  1305.      VkInfoDialog, VkQuestionDialog
  1306.  
  1307. CCCCLLLLAAAASSSSSSSSEEEESSSS UUUUSSSSEEEEDDDD BBBBYYYY TTTTHHHHIIIISSSS CCCCLLLLAAAASSSSSSSS
  1308.      VkApp,  VkSimpleWindow, VkWidgetList
  1309.  
  1310. KKKKNNNNOOOOWWWWNNNN CCCCLLLLAAAASSSSSSSSEEEESSSS TTTTHHHHAAAATTTT UUUUSSSSEEEE TTTTHHHHIIIISSSS CCCCLLLLAAAASSSSSSSS
  1311.      VkApp, VkDialogManager, VkHelpPane, VkMenuBar, VkMenuConfirmFirstAction,
  1312.      VkPipe
  1313.  
  1314.  
  1315.  
  1316.  
  1317.                                                                        PPPPaaaaggggeeee 22220000
  1318.  
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324. VVVVkkkkDDDDiiiiaaaallllooooggggMMMMaaaannnnaaaaggggeeeerrrr((((3333xxxx))))                                        VVVVkkkkDDDDiiiiaaaallllooooggggMMMMaaaannnnaaaaggggeeeerrrr((((3333xxxx))))
  1325.  
  1326.  
  1327.  
  1328. BBBBUUUUGGGGSSSS
  1329. SSSSEEEEEEEE AAAALLLLSSSSOOOO
  1330.      VkComponent, VkApp, VkSimpleWindow, VkBusyDialog, VkInterruptDialog,
  1331.      VkErrorDialog, VkFatalErrorDialog, VkFileSelectionDialog,
  1332.      VkWarningDialog, VkGenericDialog, VkPrefDialog, VkInfoDialog,
  1333.      VkQuestionDialog
  1334.      _V_i_e_w_K_i_t _P_r_o_g_r_a_m_m_e_r'_s _G_u_i_d_e
  1335.      _T_h_e _X _W_i_n_d_o_w _S_y_s_t_e_m, DEC Press, Bob Sheifler and Jim Gettys
  1336.      _T_h_e _X _W_i_n_d_o_w _S_y_s_t_e_m _T_o_o_l_k_i_t, DEC Press, Paul Asente and Ralph Swick
  1337.      _T_h_e _O_S_F/_M_o_t_i_f _P_r_o_g_r_a_m_m_e_r_s _R_e_f_e_r_e_n_c_e, Prentice Hall, OSF
  1338.  
  1339.  
  1340.  
  1341.  
  1342.  
  1343.  
  1344.  
  1345.  
  1346.  
  1347.  
  1348.  
  1349.  
  1350.  
  1351.  
  1352.  
  1353.  
  1354.  
  1355.  
  1356.  
  1357.  
  1358.  
  1359.  
  1360.  
  1361.  
  1362.  
  1363.  
  1364.  
  1365.  
  1366.  
  1367.  
  1368.  
  1369.  
  1370.  
  1371.  
  1372.  
  1373.  
  1374.  
  1375.  
  1376.  
  1377.  
  1378.  
  1379.  
  1380.  
  1381.  
  1382.  
  1383.                                                                        PPPPaaaaggggeeee 22221111
  1384.  
  1385.  
  1386.  
  1387.